#pragma once

#include "../Muzzy A Wrappers/DirectX.h"

class DirectInput;
class TextureManager;

class GameCursor
{
protected:
	Vector2 position;
	unsigned wndWidth;
	unsigned wndHeight;
	float speed;
	int textureID;
	RECT windowRect;

public:
	static GameCursor* getInstance();

	void Render();
	void Update();

	// Accessors and Mutators
	const RECT& getWindowRect() const { return windowRect; }
	int getTextureID() const { return textureID; }
	void setTextureID(int val) { textureID = val; }
	const Vector2& getPosition() const { return position; }
	void setPosition(const Vector2 &val) { position = val; }
	unsigned getWndHeight() const { return wndHeight; }
	void setWndHeight(unsigned val) { wndHeight = val; }
	unsigned getWndWidth() const { return wndWidth; }
	void setWndWidth(unsigned val) { wndWidth = val; }
	float getSpeed() const { return speed; }
	void setSpeed(float val) { speed = val; }

private:
	// Singleton
	GameCursor(void);
	GameCursor(const GameCursor&);
	virtual ~GameCursor(void);
	const GameCursor& operator =(const GameCursor&);

	// Get direct Access to System Calls
	DirectInput *input;
	TextureManager *textureManager;
};

